<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // let const   es6提出的声明变量的方式

        // let和const不存在预编译    变量先声明后使用
        // let和const在同一个作用域下变量名不能重复
        // let和const 块级作用域   {}   !!!!!!!!!!!!!!!!!!!!
        // let和const 没有挂在window下面   不属于window对象的自定义属性  !!!!!!


        // const 声明的变量不允许修改  --- 用于声明常量  
        //    存 页面的上获取的标签
        //    存 函数
        //    多数时候，用于存引用数据类型   地址不变(只要没有重新赋值地址就不会改变)
        //    const 声明之后必须立即赋值




        // console.log(a);
        // console.log(b);
        // console.log(c);

        var a = 1;
        let b = 2;
        const c = 3;

        const d = 4;

        console.log(window.a);
        console.log(window.b);


        // const r = oDiv.offsetWidth / 2;



        // const oDiv = document.querySelector('div');


        // var fn = function() {}

        const fn = function () { }


        const arr = [1, 2, 3];   // arr存的是一个地址
        // arr = [2, 3, 4];
        arr.push(4);
        console.log(arr);


        let arr1 = [4, 5, 6];


        function f() {
            let d = 3;
            console.log(d);
        }
        f()



        // {
        //     var a = 1;
        //     console.log(a);
        // }
        // console.log(a);


        // {
        //     var aa = 1;
        //     console.log(aa);
        // }


        {
            let x = 1;
            console.log(x);
        }
        // console.log(x);


        if (a == 1) {
            const y = 2;
            console.log(y);
        }

        // console.log(y);   // 报错


        for (let i = 0; i < 10; i++) {
            console.log(i);
        }

        // console.log(i);    // 报错


        // for (let i = 0; i < 10; i++) {
        //     setTimeout(function () {
        //         console.log(i);   // 0-9
        //     })
        // }

        // arr.forEach(function (v, i) {
        //     setTimeout(function () {
        //         console.log(i);
        //     })
        // })

    </script>

</body>

</html>